﻿using System;

class PrimeFactors
{
    static void Main(string[] args)
    {
        while (true)
        {
            Console.Write("请输入任意正整数: ");
            string input = Console.ReadLine();

            // 检查输入是否是有效的正整数
            if (int.TryParse(input, out int num) && num > 0)
            {
                PrintPrimeFactors(num);
            }
            else
            {
                Console.WriteLine("非法输入，请输入任意正整数");
            }
        }
    }

    // 判断一个数是否为素数
    static bool IsPrime(int num)
    {
        if (num <= 1) return false;
        if (num == 2) return true; // 2 是素数
        if (num % 2 == 0) return false; // 排除所有偶数
        for (int i = 3; i <= Math.Sqrt(num); i += 2) // 只检查奇数
        {
            if (num % i == 0) return false;
        }
        return true;
    }

    // 输出所有不重复的素数因子
    static void PrintPrimeFactors(int n)
    {
        if (n <= 1)
        {
            Console.WriteLine("没有素数因子");
            return;
        }

        Console.WriteLine("素数因子是:");

        // 处理 2 这个特殊的素数因子，只输出一次
        if (n % 2 == 0)
        {
            Console.Write(2 + " ");
            while (n % 2 == 0)
            {
                n /= 2;
            }
        }

        // 从 3 开始处理其他素数因子，只输出一次
        for (int i = 3; i <= Math.Sqrt(n); i += 2)
        {
            if (n % i == 0)
            {
                Console.Write(i + " ");
                while (n % i == 0)
                {
                    n /= i;
                }
            }
        }

        // 如果 n 是一个大于 2 的素数
        if (n > 2)
        {
            Console.Write(n);
        }

        Console.WriteLine(); // 换行
    }
}
